package com.benben.springSecurity.weiwei;
//相隔为1的编辑距离思路：
//1，首先确认两个字符串的长度差的不会太远，如果长度差大于2个字符，那么s和t肯定不是编辑距离为1
//2，假设s总是比t短或者长度相等，否则调用函数isOneEditDistance(t,s)来将两个字符串交换
//3，如果前len(s)个字符没有差别，那么只有两种可能：两个字符串是相同的，或者两个字符串的编辑距离为1
//4，如果存在不同的字符s[i]!=t[i]：
//（1）如果两个字符串长度相等，所有接下来的字符都应该相等，否则编辑距离不为1
//（2）如果两个字符串长度不相等，即t比s多一个字符，那么t[i]就应该是t串多出来的字符，这种情况下需比较s从第i个字符开始的子串和t串从i+1开始的子串是否相等
public class editLength {
    public static boolean isOneEditDistance(String s, String t) {
        int lenS = s.length();
        int lenT = t.length();
        if (lenT - lenS > 1) {
            return false;
        }
        if (lenS > lenT) {
            return isOneEditDistance(t, s);
        }
        for (int i = 0; i < lenS; i++) {
            if (s.charAt(i) != t.charAt(i)) {
                if (lenS == lenT) {
                    return s.substring(i + 1).equals(t.substring(i + 1));
                } else {
                    return s.substring(i).equals(t.substring(i + 1));
                }

            }
        }
        return lenS + 1 == lenT;
    }

    public static void main(String[] args) {
        System.out.println(isOneEditDistance("a", ""));
    }
}
